home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML Instance.sea / XML Instance / Required / swingall.jar / javax / swing / text / PlainDocument.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-07-15  |  4.4 KB  |  168 lines

  1. package javax.swing.text;
  2.  
  3. import java.util.Vector;
  4.  
  5. public class PlainDocument extends AbstractDocument {
  6.    public static final String tabSizeAttribute = "tabSize";
  7.    public static final String lineLimitAttribute = "lineLimit";
  8.    private AbstractDocument.AbstractElement defaultRoot;
  9.    private Vector added;
  10.    private Vector removed;
  11.  
  12.    public PlainDocument() {
  13.       this(new GapContent());
  14.    }
  15.  
  16.    protected PlainDocument(AbstractDocument.Content var1) {
  17.       super(var1);
  18.       this.added = new Vector();
  19.       this.removed = new Vector();
  20.       ((AbstractDocument)this).putProperty("tabSize", new Integer(8));
  21.       this.defaultRoot = this.createDefaultRoot();
  22.    }
  23.  
  24.    protected AbstractDocument.AbstractElement createDefaultRoot() {
  25.       AbstractDocument.BranchElement var1 = (AbstractDocument.BranchElement)((AbstractDocument)this).createBranchElement((Element)null, (AttributeSet)null);
  26.       Element var2 = ((AbstractDocument)this).createLeafElement(var1, (AttributeSet)null, 0, 1);
  27.       Element[] var3 = new Element[]{var2};
  28.       var1.replace(0, 0, var3);
  29.       return var1;
  30.    }
  31.  
  32.    public Element getDefaultRootElement() {
  33.       return this.defaultRoot;
  34.    }
  35.  
  36.    public Element getParagraphElement(int var1) {
  37.       Element var2 = this.getDefaultRootElement();
  38.       return var2.getElement(var2.getElementIndex(var1));
  39.    }
  40.  
  41.    private void insertComposedTextUpdate(AbstractDocument.DefaultDocumentEvent var1, AttributeSet var2) {
  42.       this.added.removeAllElements();
  43.       AbstractDocument.BranchElement var3 = (AbstractDocument.BranchElement)this.getDefaultRootElement();
  44.       int var4 = var1.getOffset();
  45.       int var5 = var1.getLength();
  46.       int var6 = var3.getElementIndex(var4);
  47.       Element var7 = var3.getElement(var6);
  48.       int var8 = var7.getStartOffset();
  49.       int var9 = var7.getEndOffset();
  50.       AbstractDocument.BranchElement[] var10 = new AbstractDocument.BranchElement[]{(AbstractDocument.BranchElement)((AbstractDocument)this).createBranchElement(var3, (AttributeSet)null)};
  51.       Element[] var11 = new Element[]{var7};
  52.       if (var8 != var4) {
  53.          this.added.addElement(((AbstractDocument)this).createLeafElement(var10[0], (AttributeSet)null, var8, var4));
  54.       }
  55.  
  56.       this.added.addElement(((AbstractDocument)this).createLeafElement(var10[0], var2, var4, var4 + var5));
  57.       if (var9 != var4 + var5) {
  58.          this.added.addElement(((AbstractDocument)this).createLeafElement(var10[0], (AttributeSet)null, var4 + var5, var9));
  59.       }
  60.  
  61.       Element[] var12 = new Element[this.added.size()];
  62.       this.added.copyInto(var12);
  63.       AbstractDocument.ElementEdit var13 = new AbstractDocument.ElementEdit(var3, var6, var11, var10);
  64.       var1.addEdit(var13);
  65.       var10[0].replace(0, 0, var12);
  66.       var3.replace(var6, 1, var10);
  67.    }
  68.  
  69.    protected void insertUpdate(AbstractDocument.DefaultDocumentEvent var1, AttributeSet var2) {
  70.       this.removed.removeAllElements();
  71.       this.added.removeAllElements();
  72.       AbstractDocument.BranchElement var3 = (AbstractDocument.BranchElement)this.getDefaultRootElement();
  73.       int var4 = var1.getOffset();
  74.       int var5 = var1.getLength();
  75.       if (var4 > 0) {
  76.          --var4;
  77.          ++var5;
  78.       }
  79.  
  80.       int var6 = var3.getElementIndex(var4);
  81.       Element var7 = var3.getElement(var6);
  82.       int var8 = var7.getStartOffset();
  83.       int var9 = var7.getEndOffset();
  84.       int var10 = var8;
  85.  
  86.       try {
  87.          String var11 = ((AbstractDocument)this).getText(var4, var5);
  88.          boolean var12 = false;
  89.  
  90.          for(int var13 = 0; var13 < var5; ++var13) {
  91.             char var14 = var11.charAt(var13);
  92.             if (var14 == '\n') {
  93.                int var15 = var4 + var13 + 1;
  94.                this.added.addElement(((AbstractDocument)this).createLeafElement(var3, (AttributeSet)null, var10, var15));
  95.                var10 = var15;
  96.                var12 = true;
  97.             }
  98.          }
  99.  
  100.          if (var12) {
  101.             int var19 = 1;
  102.             this.removed.addElement(var7);
  103.             if (var4 + var5 == var9 && var10 != var9 && var6 + 1 < var3.getElementCount()) {
  104.                ++var19;
  105.                Element var21 = var3.getElement(var6 + 1);
  106.                this.removed.addElement(var21);
  107.                var9 = var21.getEndOffset();
  108.             }
  109.  
  110.             if (var10 < var9) {
  111.                this.added.addElement(((AbstractDocument)this).createLeafElement(var3, (AttributeSet)null, var10, var9));
  112.             }
  113.  
  114.             Element[] var22 = new Element[this.added.size()];
  115.             this.added.copyInto(var22);
  116.             Element[] var16 = new Element[this.removed.size()];
  117.             this.removed.copyInto(var16);
  118.             AbstractDocument.ElementEdit var17 = new AbstractDocument.ElementEdit(var3, var6, var16, var22);
  119.             var1.addEdit(var17);
  120.             var3.replace(var6, var16.length, var22);
  121.          }
  122.  
  123.          if (Utilities.isComposedTextAttributeDefined(var2)) {
  124.             this.insertComposedTextUpdate(var1, var2);
  125.          }
  126.  
  127.       } catch (BadLocationException var18) {
  128.          throw new Error("Internal error: " + ((Throwable)var18).toString());
  129.       }
  130.    }
  131.  
  132.    protected void removeUpdate(AbstractDocument.DefaultDocumentEvent var1) {
  133.       this.removed.removeAllElements();
  134.       AbstractDocument.BranchElement var2 = (AbstractDocument.BranchElement)this.getDefaultRootElement();
  135.       int var3 = var1.getOffset();
  136.       int var4 = var1.getLength();
  137.       int var5 = var2.getElementIndex(var3);
  138.       int var6 = var2.getElementIndex(var3 + var4);
  139.       if (var5 != var6) {
  140.          for(int var7 = var5; var7 <= var6; ++var7) {
  141.             this.removed.addElement(var2.getElement(var7));
  142.          }
  143.  
  144.          int var8 = var2.getElement(var5).getStartOffset();
  145.          int var9 = var2.getElement(var6).getEndOffset();
  146.          Element[] var10 = new Element[]{((AbstractDocument)this).createLeafElement(var2, (AttributeSet)null, var8, var9)};
  147.          Element[] var11 = new Element[this.removed.size()];
  148.          this.removed.copyInto(var11);
  149.          AbstractDocument.ElementEdit var12 = new AbstractDocument.ElementEdit(var2, var5, var11, var10);
  150.          var1.addEdit(var12);
  151.          var2.replace(var5, var11.length, var10);
  152.       } else {
  153.          Element var13 = var2.getElement(var5);
  154.          if (!var13.isLeaf()) {
  155.             Element var14 = var13.getElement(var13.getElementIndex(var3));
  156.             if (Utilities.isComposedTextElement(var14)) {
  157.                Element[] var15 = new Element[]{((AbstractDocument)this).createLeafElement(var2, (AttributeSet)null, var13.getStartOffset(), var13.getEndOffset())};
  158.                Element[] var16 = new Element[]{var13};
  159.                AbstractDocument.ElementEdit var17 = new AbstractDocument.ElementEdit(var2, var5, var16, var15);
  160.                var1.addEdit(var17);
  161.                var2.replace(var5, 1, var15);
  162.             }
  163.          }
  164.       }
  165.  
  166.    }
  167. }
  168.